package com.heima.pojo.entity;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.core.jackson.SchemaSerializer;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigInteger;
import java.time.LocalDateTime;

/**
 * 订单表实体类（对应 tb_order 表）
 */
@Data // Lombok 注解：自动生成 getter/setter、toString、equals、hashCode 等方法
public class TbOrder {

    /**
     * 主键 ID（对应表中 id 字段）
     */
    private BigInteger id;

    /**
     * 订单编号（对应表中 order_no 字段，非空）
     */
    private String orderNo;

    /**
     * 第三方平台单号（对应表中 third_no 字段，可空）
     */
    private String thirdNo;

    /**
     * 机器编号（对应表中 inner_code 字段，可空）
     */
    private String innerCode;

    /**
     * skuId（对应表中 sku_id 字段，可空）
     */

    private Long skuId;

    /**
     * 商品名称（对应表中 sku_name 字段，可空，长度20）
     */
    private String skuName;

    /**
     * 商品类别Id（对应表中 class_id 字段，可空）
     */
    private Integer classId;

    /**
     * 订单状态:0-创建;1-支付完成;2-出货成功;3-出货失败;4-失效（对应表中 status 字段，可空）
     */
    private Integer status;

    /**
     * 支付金额（对应表中 amount 字段，非空，默认0）
     */
    private Integer amount;

    /**
     * 商品金额（对应表中 price 字段，非空，默认0）
     */
    private Integer price;

    /**
     * 支付类型，1支付宝 2微信（对应表中 pay_type 字段，可空，长度1）
     */
    private String payType;

    /**
     * 支付状态，0-未支付;1-支付完成;2-退款中;3-退款完成（对应表中 pay_status 字段，可空，默认0）
     */
    private Integer payStatus;

    /**
     * 合作商账单金额（对应表中 bill 字段，可空，默认0）
     */
    private Integer bill;

    /**
     * 点位地址（对应表中 addr 字段，可空，长度200）
     */
    private String addr;

    /**
     * 所属区域Id（对应表中 region_id 字段，可空）
     */
    private BigInteger regionId;

    /**
     * 区域名称（对应表中 region_name 字段，可空，长度50）
     */
    private String regionName;

    /**
     * 所属商圈Id（对应表中 business_id 字段，可空）
     */
    private Integer businessId;

    /**
     * 商圈名称（对应表中 business_name 字段，可空，长度50）
     */
    private String businessName;

    /**
     * 合作商Id（对应表中 owner_id 字段，可空）
     */
    private Integer ownerId;

    /**
     * 微信/支付宝 openId（对应表中 open_id 字段，可空，长度200）
     */
    private String openId;

    /**
     * 点位Id（对应表中 node_id 字段，可空）
     */
    private BigInteger nodeId;

    /**
     * 点位名称（对应表中 node_name 字段，可空，长度50）
     */
    private String nodeName;

    /**
     * 取消原因（对应表中 cancel_desc 字段，可空，默认空字符串）
     */
    private String cancelDesc;

    /**
     * 创建时间（对应表中 create_time 字段，可空，时间戳类型）
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") // 前端传参时的时间格式
    private LocalDateTime createTime;

    /**
     * 更新时间（对应表中 update_time 字段，可空，时间戳类型）
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

}